package J3_19;

public class test {
    //给你一个整数数组 nums （下标从 0 开始）和一个整数 k 。
    //
    //一个子数组 (i, j) 的 分数 定义为 min(nums[i], nums[i+1], ..., nums[j]) * (j - i + 1) 。一个 好 子数组的两个端点下标需要满足 i <= k <= j 。
    //
    //请你返回 好 子数组的最大可能 分数 。
    public int maximumScore(int[] nums, int k) {
        int n = nums.length;
        int left = k;
        int right = k;
        int score = nums[k];
        int min = score;
        while(true) {
            while (left >= 0 && nums[left] >= min) {
                left--;
            }
            while (right <= n - 1 && nums[right] >= min) {
                right++;
            }
            score = Math.max(score,min*(right - left - 1));
            if (left == -1 && right == n) {
                break;
            }
            min = Math.max((left == -1 ? -1 : nums[left]), (right == n ? -1 : nums[right]));

        }
        return score;
    }
}
